A session will contain several snapshots generated during the lifetime of the target application process that was profiled. A new snapshot can be generated in one of three ways:

  1. Automatically via the Snapshot on termination option.
  2. Manually via the Take Snapshot button during profiling.
  3. Programmatically via the Application Programming Interface (API).

A snapshot will capture every allocation from the set of enabled Profiling Groups, that is live at the time the snapshot is created.

Snapshot

Right click on a snapshot tab to rename the snapshot.

  • Group by - Every allocation in the snapshot can be grouped by a common value for one of the following properties associated with every allocation:
    • Type - The type of the allocation, for example "Windows Heap" or "Windows Handle File".
    • Allocation ID - A unique sequential ID number given to this allocation.
    • Thread ID - The ID of the thread that generated the allocation.
    • Heap - For heap based allocations, this is the value of the heap which serviced the allocation.
    • Allocation Value - For heap based allocations this will be the pointer value to the allocated heap chunk. For handle based allocations this will be the handle value.
    • Size - The size in bytes of this allocation.
    • Call Stack Hash - A unique 32-bit hash value of the recorded call stack.
    • User Code Hint - The symbol name of the first non external symbol in the call stack for this allocation.
    • External Code Hint - The symbol name of the last external symbol in the call stack for this allocation before the first non external symbol.
    • Allocation Hint - Several comma separated 'hint' values may be associated with an allocation.
      • freed - This allocation has been previously freed.
      • reallocated - This allocation was reallocated.
      • ignore - This allocation has been tagged as ignore, via either the API, Symbol Settings, or a special source code tag.
      • added - When comparing snapshot A against snapshots B, this allocation was not present in snapshot A.
      • removed - When comparing snapshot A against snapshots B, this allocation was not present in snapshot B.
      • equal - When comparing snapshot A against snapshots B, this allocation was present in both snapshots.
      • nosource - The call stack for this allocation has no source code files available.
  • Filters - Filters can be used to filter out allocations that are not currently of interest. Filtering out an allocation does not remove it from the snapshot but rather prevents it from being displayed while the filter is in place. For a detailed description of the filter rules see the filter settings page. The number of currently applied filters and the total number of filters are displayed in the round brackets.
  • Compare To - If two or more snapshots have been taken, you can compare one snapshot against another snapshot. This lets you view what allocations are present in both snapshots and which allocations are present in one snapshot but not the other. An example of Comparing Snapshots is available.
Allocations

A snapshots allocations are presented in a sortable table. Selecting an allocation will display its call stack.

Right click on the table header to show or hide columns or automatically resize columns to fit.

Right clicking on an allocation will open a pop-up menu:

  • Rename Thread - Rename the thread associated with this allocation.
  • Add Filter... - A helper to create a new filter rule based on the cell value that has been right clicked.
  • Copy Cell Value - Copies the cell value that has been right clicked to the system clipboard.
  • Copy Row comma Separated Values (CVS) - Copies the currently selected row in a comma separated value (CSV) format to the system clipboard.
  • Copy Table comma Separated Values (CVS) - Copies the entire call stack table in a comma separated value (CSV) format to the system clipboard.
Copyright © 2021, Relyze Software Limited